Skip to content

feat: create Runway RC#27662

Merged
weitingsun merged 18 commits into
mainfrom
wsun/create-runway-rc-ios-workflow
Mar 24, 2026
Merged

feat: create Runway RC#27662
weitingsun merged 18 commits into
mainfrom
wsun/create-runway-rc-ios-workflow

Conversation

@weitingsun
Copy link
Copy Markdown
Contributor

@weitingsun weitingsun commented Mar 18, 2026

Description

New workflow runway_ios_rc_workflow is created. We are using this workflow in Runway for RC release to iOS. If there is a change in OTA version in ota.ts, then we call Push OTA update workflow and push an OTA update to iOS RC. If not, we are going to call Build Mobile App workflow and build a new iOS RC.

Note: added runway_android_rc_workflow

Success workflow runs:
Regular build: https://github.com/MetaMask/metamask-mobile/actions/runs/23260145017
OTA Push: https://github.com/MetaMask/metamask-mobile/actions/runs/23267287137

Changelog

CHANGELOG entry: Added new workflow runway_ios_rc_workflow

Related issues

Fixes:

Manual testing steps

Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]

Screenshots/Recordings

Before

After

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Medium Risk
Adds new GitHub Actions workflows that can dispatch builds, OTA updates, and iOS TestFlight uploads; misconfiguration could trigger the wrong release path or fail deployments. Changes are CI/release-pipeline only, with no runtime app behavior impact beyond the OTA_VERSION constant value change.

Overview
Adds Runway RC GitHub Actions workflows for ios and android that, on workflow_dispatch, detect whether app/constants/ota.ts’s OTA_VERSION changed vs the current release tag (or main) and then either dispatch push-eas-update.yml (requires resolving a PR number) or invoke the reusable build.yml for main-rc builds.

The iOS workflow additionally uploads the generated IPA to TestFlight (with a step summary) after a successful build. Separately simplifies build.yml branch selection by switching source_branch handling to inputs.source_branch || github.ref_name, and updates OTA_VERSION to a placeholder value.

Written by Cursor Bugbot for commit b8641bc. This will update automatically on new commits. Configure here.

@weitingsun weitingsun requested a review from a team as a code owner March 18, 2026 22:38
@github-actions
Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbot metamaskbot added the team-mobile-platform Mobile Platform team label Mar 18, 2026
@github-actions github-actions Bot added size-M risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 18, 2026
fix permission issue

test ota update

[skip ci] Bump version number to 4061

resolve if release tag does not exist

fix no PR number found error

fix base branch issue

change version to 7.69.0

change to workflow_dispatch

revert build number

change ota version

revert build number
@weitingsun weitingsun force-pushed the wsun/create-runway-rc-ios-workflow branch from 58dc329 to f12eda7 Compare March 18, 2026 22:44
@weitingsun weitingsun requested review from Cal-L and tommasini March 18, 2026 22:45
Comment thread app/constants/ota.ts
* We keep this OTA_VERSION here to because changes in ota.config.js will affect the fingerprint and break the workflow in Github Actions
*/
export const OTA_VERSION: string = 'v7.65.1';
export const OTA_VERSION: string = 'vX.XX.X';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Placeholder OTA version string committed to production code

High Severity

OTA_VERSION is set to the placeholder 'vX.XX.X' instead of a real version string. This value is displayed to users in the App Information settings screen (e.g. "MetaMask ota vX.XX.X (build)") and is passed as the message input when the new workflow triggers an OTA update via push-eas-update.yml. The file's own comment says to use version strings like v0, v1, v2 and reset to v0 for new native builds — vX.XX.X is a template marker, not a valid version.

Fix in Cursor Fix in Web

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we will always want to update this when it's an OTA push, so it makes sense to keep it generic on main

Comment thread .github/workflows/runway_ios_rc_workflow.yml
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 18, 2026
@weitingsun weitingsun changed the title feat: create Runway iOS RC feat: create Runway RC Mar 19, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 19, 2026
Comment thread .github/workflows/build.yml Outdated
@weitingsun weitingsun marked this pull request as draft March 19, 2026 19:22
@weitingsun weitingsun force-pushed the wsun/create-runway-rc-ios-workflow branch from 97773fc to 73503b1 Compare March 20, 2026 16:56
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 20, 2026
Comment thread .github/workflows/runway_ios_rc_workflow.yml
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 23, 2026
Comment thread .github/workflows/runway_ios_rc_workflow.yml Outdated
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 24, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 24, 2026
else
echo "ota_bump=false" >> "$GITHUB_OUTPUT"
echo "No OTA version bump (base: $BASE_OTA, current: $CURRENT_OTA) → will trigger build"
fi
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicated decide job across iOS and Android workflows

Low Severity

The entire decide job (~70 lines including OTA detection logic, PR resolution, and sed-based version extraction) is copy-pasted verbatim between runway_ios_rc_workflow.yml and runway_android_rc_workflow.yml. The trigger-ota job is also nearly identical (differing only in the platform value). A bug fix or behavior change to the OTA detection logic (e.g., the fragile sed -n '9p' extraction) would need to be applied to both files independently, risking divergence. Extracting the shared decide logic into a reusable workflow (like build.yml is used) would reduce this maintenance risk.

Additional Locations (1)
Fix in Cursor Fix in Web

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds good will extract in the next PR :)

@weitingsun weitingsun enabled auto-merge March 24, 2026 17:07
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 24, 2026
@github-actions
Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: None (no tests recommended)
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: low
  • AI Confidence: 95%
click to see 🤖 AI reasoning details

E2E Test Selection:
All 4 changed files are CI/CD infrastructure changes with no impact on app functionality or E2E test flows:

  1. .github/workflows/build.yml: Minor expression simplification — inputs.source_branch != '' && inputs.source_branch || github.ref_nameinputs.source_branch || github.ref_name. These are semantically equivalent in GitHub Actions (empty string is falsy), so this is a cosmetic/readability fix with no behavioral change.

  2. .github/workflows/runway_android_rc_workflow.yml (new file): New Runway-triggered workflow for Android RC builds. Purely CI pipeline automation — decides between OTA update or full native build based on OTA_VERSION bump detection. No app code changes.

  3. .github/workflows/runway_ios_rc_workflow.yml (new file): New Runway-triggered workflow for iOS RC builds with TestFlight upload. Same pattern as Android workflow. Purely CI pipeline automation.

  4. app/constants/ota.ts: OTA_VERSION changed from 'v7.65.1' to 'vX.XX.X'. This constant is only used for: (a) Sentry tag metadata (expo-ota-version), and (b) log metadata. It has no effect on any user-facing functionality, navigation, controllers, or E2E test flows. The new CI workflows read this value via sed from the file directly — it's a placeholder reset for the new workflow's bump-detection logic.

None of these changes affect: app source code logic, UI components, controllers, navigation, test infrastructure (page objects, fixtures, test framework), or any user flows tested by E2E tests. No E2E tests are warranted.

Performance Test Selection:
All changes are CI/CD workflow files and a version string constant. No app code, UI components, data loading, state management, or performance-sensitive paths were modified. Performance tests are not warranted.

View GitHub Actions results

Copy link
Copy Markdown
Contributor

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

There are 4 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

echo "Using PR #${{ needs.decide.outputs.pr_number }}"

- name: Trigger Push OTA Update workflow
uses: actions/github-script@v6
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deprecated Node.js 16 action in new workflows

Medium Severity

Both new workflow files use actions/github-script@v6, which runs on the deprecated Node.js 16 runtime. GitHub has been warning about Node.js 16 deprecation since September 2023, and these actions will eventually fail. The same repo already uses actions/github-script@v7 (Node.js 20) in generate-rc-test-plan.yml, so the newer version is already proven to work in this codebase.

Additional Locations (1)
Fix in Cursor Fix in Web

else
echo "ota_bump=false" >> "$GITHUB_OUTPUT"
echo "No OTA version bump (base: $BASE_OTA, current: $CURRENT_OTA) → will trigger build"
fi
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Near-identical decide job duplicated across workflows

Low Severity

The decide job (~70 lines) is completely identical between runway_ios_rc_workflow.yml and runway_android_rc_workflow.yml. The only differences between the two files are the platform string ('ios' vs 'android') in trigger-ota and trigger-build, plus the iOS-specific TestFlight upload jobs. A reusable workflow parameterized by platform would eliminate the duplication and the risk of the two copies drifting out of sync.

Additional Locations (1)
Fix in Cursor Fix in Web

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we want separate workflows for Runway

@sonarqubecloud
Copy link
Copy Markdown

@weitingsun weitingsun added this pull request to the merge queue Mar 24, 2026
Merged via the queue into main with commit 28733f8 Mar 24, 2026
60 of 62 checks passed
@weitingsun weitingsun deleted the wsun/create-runway-rc-ios-workflow branch March 24, 2026 18:07
@github-actions github-actions Bot locked and limited conversation to collaborators Mar 24, 2026
@metamaskbot metamaskbot added the release-7.72.0 Issue or pull request that will be included in release 7.72.0 label Mar 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-7.72.0 Issue or pull request that will be included in release 7.72.0 risk-low Low testing needed · Low bug introduction risk size-M team-mobile-platform Mobile Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants